package File.project;

import javax.xml.crypto.Data;
import java.io.File;
import java.io.IOException;

/*
    File类：文件工具类，继承Object类
    作用：专门用于处理文件和文件目录的工具

    File类的使用：1.分隔符
                2.文件的操作
                3.文件夹的操作
 */
public class PracticeMain {
    public static void main(String[] args) throws IOException {
        test01();
        test02();//需要抛出异常
        test03();
    }
    //1.分隔符
    public static void test01() {
        System.out.println("路径分隔符"+ File.pathSeparator);//;分隔符
        System.out.println("路径名称分隔符"+File.separator); // \分隔符
    }

    //  2.文件的操作
    public static void test02() throws IOException {
        //1.创建文件:new File(文件路径);
        File file = new File("E:\\idea\\IntelliJ IDEA 2020.3\\perject_idea\\20210325\\h.txt");
        //System.out.println(file.toString());//将file的路径以字符串的形式打印出来

        if(!file.exists()){ //exists()方法用于判断文件是否存在,类型为boolean
            boolean b = file.createNewFile(); //该方法的作用是将文件创建在给定的位置 返回类型为boolean；会出现异常，抛出或者用try-catch
            System.out.println("创建结果"+b);
        }

        //2.删除文件
        //方法1
        //boolean d = file.delete();
       // System.out.println("文件删除结果"+d);
        //方法2 使用JVM退出时删除文件
        //file.deleteOnExit();
        //Thread.sleep(3000);//文件在3秒钟后被删除

        //3.获取文件信息
        System.out.println("获取文件的绝对路径："+file.getAbsolutePath()); //获取文件的绝对路径
        System.out.println("获取路径："+file.getPath()); //获取你创建文件时所写的路径
        System.out.println("获取文件名称："+file.getName()); //获取文件名称
        System.out.println("获取文件父目录："+file.getParent()); //获取文件父目录
        System.out.println("获取文件长度（大小）"+file.length()); //获取文件长度（大小）
        System.out.println("文件创建时间："+file.lastModified());//文件创建时间,类型为long  怎么转为日期型？

        //4.判断
        System.out.println("判断文件是否可写入信息："+file.canWrite());//判断文件是否可写入信息
        System.out.println("判断是否是文件："+file.isFile());//判断是否是文件
        System.out.println("判断是否为隐藏："+file.isHidden());//判断是否为隐藏
        System.out.println("==========================================================");
    }

    //3.文件夹的操作
    public static void test03() {
        //1.创建文件夹
        File file = new File("E:\\idea\\IntelliJ IDEA 2020.3\\perject_idea\\20210325\\I\\aaa\\bbb\\ccc");
        //判断文件夹是否存在
        if(!file.exists()){ ////exists()方法用于判断文件夹是否存在,类型为boolean
            //file.mkdir(); //将文件夹创建在指定目录下，mkdir()是创建单级目录
            //file.mkdirs(); //将文件夹创建在指定目录下，mkdir()是创建多级目录
            System.out.println("文件夹创建结果："+file.mkdirs());
        }

        //2.删除文件夹
        //方法1:delete(),只删除最里层的目录，而且该目录下必须是空的
        //System.out.println("文件删除结果"+file.delete());
        //方法2:deleteOnExit(),只删除最里层的目录，而且该目录下必须是空的
        //file.deleteOnExit();

        //3.获取文件夹信息
        System.out.println("获取文件夹的绝对路径："+file.getAbsolutePath()); //获取文件夹的绝对路径
        System.out.println("获取路径："+file.getPath()); //获取你创建文件夹时所写的路径
        System.out.println("获取文件夹名称："+file.getName()); //获取最里层文件夹的名称
        System.out.println("获取文件夹父目录："+file.getParent()); //获取最里层文件夹的父目录
        System.out.println("文件夹创建时间："+file.lastModified());//文件夹创建时间,类型为long  怎么转为日期型？

        //4.判断
        System.out.println("判断是否是文件夹："+file.isFile());//判断是否是文件夹
        System.out.println("判断是否为隐藏："+file.isHidden());//判断是否为隐藏

        //5.遍历文件夹
        File file1 = new File("E:\\idea\\IntelliJ IDEA 2020.3\\perject_idea\\20210325\\O");//获取文件夹位置
        String[] list = file1.list(); //list()方法获取当前文件夹中的内容，以数组的形式返回
        for (String string : list) {  //使用增强for遍历数组中的内容
            System.out.println(string);
        }
    }
}
